import type { Dayjs } from 'dayjs';
import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace InfoStoreApi {
  /** 门店信息 */
  export interface InfoStore {
    id: number; // 门店ID
    groupId?: number; // 所属集团ID
    groupName?: string;
    groupCode?: string;
    storeCode?: string; // 门店编码
    storeName?: string; // 门店名称
    parentStoreId: number; // 父门店ID
    storeType?: string; // 门店类型
    contactPerson: string; // 联系人
    contactPhone: string; // 联系电话
    contactEmail: string; // 联系邮箱
    address: string; // 地址
    longitude: number; // 经度
    latitude: number; // 纬度
    businessHours: string; // 营业时间
    status?: string; // 状态
    openTime: Dayjs | string; // 开业时间
    config: string; // 门店配置
    iotConfig: string; // IoT设备配置
    orgId: number; // 组织ID
    businessLicense: string; // 营业执照号
    storeManager: string; // 店长
    city: string; // 城市
    district: string; // 区县
    handCardCount: number; // 手牌数量
    roomCount: number; // 房间数量
    technicianCount: number; // 技师数量
    siteInfo?: string; // 绑定站点信息（JSON格式存储）
    siteIds?: number[]; // 临时字段，用于表单处理
  }
}

/** 查询门店分页 */
export function getInfoStorePage(params: PageParam) {
  return requestClient.get<PageResult<InfoStoreApi.InfoStore>>(
    '/spa/info-store/page',
    { params },
  );
}

/** 查询门店分页 */
export function getInfoStoreWithGroupPage(params: PageParam) {
  return requestClient.get<PageResult<InfoStoreApi.InfoStore>>(
    '/spa/info-store/page-with-group',
    { params },
  );
}

/** 查询门店详情 */
export function getInfoStore(id: number) {
  return requestClient.get<InfoStoreApi.InfoStore>(
    `/spa/info-store/get?id=${id}`,
  );
}

/** 查询门店详情 */
export function getInfoStoreWithGroup(id: number) {
  return requestClient.get<InfoStoreApi.InfoStore>(
    `/spa/info-store/get-with-group?id=${id}`,
  );
}

/** 新增门店 */
export function createInfoStore(data: InfoStoreApi.InfoStore) {
  return requestClient.post('/spa/info-store/create', data);
}

/** 修改门店 */
export function updateInfoStore(data: InfoStoreApi.InfoStore) {
  return requestClient.put('/spa/info-store/update', data);
}

/** 删除门店 */
export function deleteInfoStore(id: number) {
  return requestClient.delete(`/spa/info-store/delete?id=${id}`);
}

/** 导出门店 */
export function exportInfoStore(params: any) {
  return requestClient.download('/spa/info-store/export-excel', { params });
}
